
import java.util.Scanner;

public class Guess {
    /*需求：
  生成一个随机4个不重复数字的数组，用户有五次机会猜这个数组的数字。
  如果：
  随机数组为：{1,2,5,9} 用户猜测为{1,5,3,8}
  那么输出 1A1B ,也就是猜中了相同位置的相同数字记为一个A，只有位置不同，数字相同才记为一个B
  用户有5次机会，需要达到4A0B才是猜对了。
   */

    //新建用户输入数组
    public static int[] guess = new int[4];
    public static int count = 0;

    //主函数
    public static void main(String[] args) {
        int[] win = com();
        for (int item : win) {
            System.out.println("机选数组" + item);
        }

        judge(win, guess);

    }

    //判断
    public static void judge(int[] win, int[] guess) {
        String str = "";
        //五次猜测机会
        while (count < 5) {
            int a = 0;
            int b = 0;
            print();
            for (int i = 0; i < guess.length; i++) {
                //这是判断A有多少个
                if (win[i] == guess[i]) {
                    a++;
                }
                for (int j = 0; j < guess.length; j++) {
                    //这是判断B有多少个
                    if (guess[i] == win[j]) {
                        b++;

                    }
                }
            }
            count++;
            if (a != 4) {
                str = "很遗憾没有猜对！你的结果为：" + a + "A" + b + "B,你还有" + (5 - count) + "次机会！";
            }else{
                str = "恭喜你猜对了!";
                break;
            }
        }
        System.out.println(str);
    }


    //输入数组
    public static int[] print() {
        //循环输入
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < guess.length; i++) {
            //判断输入类型
            try {
                System.out.println("请输入第" + (i + 1) + "个数字");
                int number = sc.nextInt();
                //判断是否重复
                boolean x = false;
                for (int j = 0; j < i; j++) {
                    if (guess[j] == number) {
                        //如果相等，x=ture，请用户重新输入
                        x = true;
                        System.out.println("有重复数字，请重新输入");
                        i--;
                        break;
                    }
                }
                //如果不相等
                if (!x) {
                    guess[i] = number;
                }
            } catch (Exception e) {
                System.out.println("输入有误，请重新输入");
                sc.next();//清空
            }
        }
        return guess;
    }


    //生成随机4个不重复的0-9的数字，放在一个数组内 返回一个随机数组winNum[]
    public static int[] com() {
        //新建数组
        int[] win = new int[4];
        //循环输入
        for (int i = 0; i < win.length; i++) {
            int num = (int) (Math.random() * 10 + 0); // 随机数0-9
            boolean repeat = false; // 重复状态假设没有重复
            for (int j = 0; j < i; j++) {
                if (num == win[j]) { // 重复
                    repeat = true;
                }
            }
            if (repeat) { //有重复 i--后继续随机
                i--;
            } else { // 不重复
                win[i] = num;
            }
        }
        return win;
    }


}


